tdsql 最小化安装部署

腾讯分布式数据库(Tencent Distributed SQL,TDSQL)是腾讯研发的一款兼容Mysql协议的国产分布式数据库。它适用于超大并发、超高性能、超大容量的OLTP类场景,采用主从高可用架构,提供弹性扩展、备份、恢复、监控等全套解决方案,有效解决业务快速发展时数据库面临的各种挑战。

部署规划

使用三台机器,系统为centos 7.6, 配置均为8c32g,外挂3块200g磁盘。

主机IP及主机名如下:192.168.6.3(mac1),192.168.6.5(mac2),192.168.6.6(mac3).

组件规划如下

192.168.6.3 192.168.6.5 192.168.6.6
zk Y Y Y
scheduler Y Y
oss Y Y
chitu Y Y
monitor Y Y
db Y Y
proxy Y Y
hdfs Y
lvs Y Y
kafka Y Y Y
consumer Y
OSS Y
es Y

配置免密登录

首先更改主机名:

1
2
3
192.168.6.3上	hostname mac1 && bash
192.168.6.5上 hostname mac2 && bash
192.168.6.6上 hostname mac3 && bash

然后分别将各自主机写入 /etc/hosts 中,内容如下:

1
2
3
192.168.6.3     mac1
192.168.6.5 mac2
192.168.6.6 mac3

最后在主控机上,使用root用户配置(到所有机器,包括自己)免密登录:

1
2
3
4
[root@mac1 ~]# ssh-keygen 
[root@mac1 ~]# ssh-copy-id mac1
[root@mac1 ~]# ssh-copy-id mac2
[root@mac1 ~]# ssh-copy-id mac3

其他前期准备

需要所有机器上设置yum/apt 源(os安装镜像包仓库即可),需要所以机器间设置时间同步(例如ntp,chrony)。

根据自己需求,安装常用 yum 工具,例如unzip(必须),vim,net-tools,curl等。

1
yum install -y unzip vim curl net-tools

在主控机上安装ansible

上传安装包并解压(安装包的路径不能有中文)。

1
2
3
[root@mac1 tdsql]# unzip ansible_tdsql_install_20200623.zip
[root@mac1 tdsql]# unzip tdsql_packet_10.3.14.6.0_x86_D014.zip
[root@mac1 script]# cd ansible_install/script/

初始化机器环境(2选1)

1
2
3
sh init_os_for_yum_install.sh(使用 yum 的操作系统)

sh init_os_for_apt_install.sh(使用 apt 的操作系统)

安装python3(2选1)

1
2
3
4
5
6
sh install_python3_for_x86.sh(使用 x86 的 cpu)
sh install_python3_for_arm.sh(使用 arm 的 cpu)

验证 python3 安装是否成功
source /etc/profile
python3 --version

安装ansible

1
2
3
sh install_ansible.sh
验证 ansible 安装是否成功
ansible --version

准备数据目录路径

所有机器上的/data 路径挂载磁盘大小 200G 以上(非 DB 机器的/data 路径大小可以 100G)。 DB 机器的/data1 路径需要单独挂载磁盘(建议做 raid 后挂载,可以使用mdadm做raid),磁盘大小根据业务数据量决定。

我三台机器都是用了3块 200G硬盘,由于只是做测试,故不做raid,格式化为 xfs 文件系统后,直接挂载至 /data /data1 /data2下,并将挂载信息写入 /etc/fstab 中。以 192.168.6.3 为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@mac1 script]# mkfs.xfs /dev/vdc
[root@mac1 script]# mkfs.xfs /dev/vdd
[root@mac1 script]# mkfs.xfs /dev/vde
[root@mac1 script]# blkid /dev/vdc
/dev/vdc: UUID="3ad73bdc-fd2a-4151-abc6-492d28f3bc43" TYPE="xfs"
[root@mac1 script]# blkid /dev/vdd
/dev/vdd: UUID="7e27b1bc-88e7-489a-a941-07aaa2a27287" TYPE="xfs"
[root@mac1 script]# blkid /dev/vde
/dev/vde: UUID="91d0cda1-0fbb-4836-98fc-7032dcada8c4" TYPE="xfs"
[root@mac1 script]# mkdir /data /data1 /data2
[root@mac1 script]# cat /etc/fstab
UUID="3ad73bdc-fd2a-4151-abc6-492d28f3bc43" /data xfs defaults 0 0
UUID="7e27b1bc-88e7-489a-a941-07aaa2a27287" /data1 xfs defaults 0 0
UUID="91d0cda1-0fbb-4836-98fc-7032dcada8c4" /data2 xfs defaults 0 0
[root@mac1 script]# mount -a
[root@mac1 script]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 50G 8.0G 39G 18% /
devtmpfs devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 16G 0 16G 0% /dev/shm
tmpfs tmpfs 16G 17M 16G 1% /run
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
tmpfs tmpfs 3.2G 0 3.2G 0% /run/user/0
/dev/vdc xfs 200G 33M 200G 1% /data
/dev/vdd xfs 200G 33M 200G 1% /data1
/dev/vde xfs 200G 33M 200G 1% /data2

修改 tdsql_hosts 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[root@mac1 script]# cd ../../tdsql_install/
[root@mac1 tdsql_install]# vim tdsql_hosts
[root@mac1 tdsql_install]# cat tdsql_hosts
[tdsql_allmacforcheck] <-----填入所有机器的地址,用于环境检测和初始化配置
tdsql_mac1 ansible_ssh_host=192.168.6.3
tdsql_mac2 ansible_ssh_host=192.168.6.5
tdsql_mac3 ansible_ssh_host=192.168.6.6


[tdsql_zk] <------填入 zk 的地址,tdsql_zk1..5,zk 的数量只能是 1、3 或 5
<------如果是使用自己的 zk 集群,这里同样要填写正确的 zk 地址
tdsql_zk1 ansible_ssh_host=192.168.6.3
tdsql_zk2 ansible_ssh_host=192.168.6.5
tdsql_zk3 ansible_ssh_host=192.168.6.6

[tdsql_scheduler] <------填入 scheduler 地址,正式环境建议 2 个 scheduler
tdsql_scheduler1 ansible_ssh_host=192.168.6.5
tdsql_scheduler2 ansible_ssh_host=192.168.6.6

[tdsql_oss] <---填入 oss 地址,正式环境建议 2 个 oss
tdsql_oss1 ansible_ssh_host=192.168.6.5
tdsql_oss2 ansible_ssh_host=192.168.6.6

[tdsql_chitu] <----填入 chitu 地址,正式环境建议 2 个 chitu
tdsql_chitu1 ansible_ssh_host=192.168.6.5
tdsql_chitu2 ansible_ssh_host=192.168.6.6

[tdsql_monitor] <---填入监控和采集模块的地址,正式环境建议 2 个 monitor
tdsql_monitor1 ansible_ssh_host=192.168.6.5
tdsql_monitor2 ansible_ssh_host=192.168.6.6

[tdsql_db] <----填入 db 机器的地址
tdsql_db1 ansible_ssh_host=192.168.6.5
tdsql_db2 ansible_ssh_host=192.168.6.6

[tdsql_proxy] <----填入 proxy 机器的地址
tdsql_proxy1 ansible_ssh_host=192.168.6.5
tdsql_proxy2 ansible_ssh_host=192.168.6.6

[tdsql_hdfs] <---填入 hdfs 机器地址,hdfs 初始数量只能是 1 或 3,1 或者 3 是与 group_vars/all 文件中的 tdsql_hdfs_num: 3 对应的,所以如果写了 1 个 ip 地址,则 tdsql_hdfs_num: 1,如果写了 3 个 ip 地址,则 tdsql_hdfs_num: 3

tdsql_hdfs1 ansible_ssh_host=192.168.6.3

[tdsql_lvs] <---填入 lvs 地址,lvs 的数量固定为 2
tdsql_lvs1 ansible_ssh_host=192.168.6.5
tdsql_lvs2 ansible_ssh_host=192.168.6.6


[tdsql_kafka] <----填入 kafka 集群的地址,kafka 的数量固定为 3
tdsql_kafka1 ansible_ssh_host=192.168.6.3
tdsql_kafka2 ansible_ssh_host=192.168.6.5
tdsql_kafka3 ansible_ssh_host=192.168.6.6

[tdsql_consumer] <---填入消费者的地址,数量固定为 1
tdsql_consumer1 ansible_ssh_host=192.168.6.3

[tdsql_es] <---填入 es 的地址,数量固定为 1
tdsql_es1 ansible_ssh_host=192.168.6.3

[tdsql_intercity] <---部署跨城DCN时需要改动,不能部署到之前部署过oss和scheduler的机器上,由于此处只有三台机器,故只能部署到 192.168.6.3
tdsql_intercity1 ansible_ssh_host=192.168.6.3

[tdsql_newdb] <---无需改动
tdsql_newdb1 ansible_ssh_host=1.1.1.1
tdsql_newdb2 ansible_ssh_host=2.2.2.2
tdsql_newdb3 ansible_ssh_host=3.3.3.3

[tdsql_ansible_test] <---无需改动
tdsql_ansible_test1 ansible_ssh_host=10.240.139.35
tdsql_ansible_test2 ansible_ssh_host=10.120.109.204
tdsql_ansible_test3 ansible_ssh_host=10.120.109.205

决定系统账号tdsql 的密码

需要设置系统账号tdsql的明文密码,可自定义修改。

此处我给tdsql账号设置的明文密码为:wangmj

修改ansible变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

---
tdsql_env_cpu: x86 <---x86 或者 arm (必须二选一)
tdsql_env_os: yum_install <---yum_install 或者 apt_install (必须二选一)
tdsql_zk_num: 3 <---填入 zk 集群的数量,1、3 或者 5
tdsql_sche_netif: eth0 <---填入 scheduler(ifconfig 看到的)网卡的名称
tdsql_os_pass: wangmj <---填入 tdsql 账号的明文密码,可自定义修改
tdsql_zk_rootdir: /tdsqlzk <---填入 tdsql 系统在 zk 上的根路径(一般不改)
tdsql_metadb_ip: 10.120.109.204 <-----暂时不改动
tdsql_metadb_port: 15001 <-----暂时不改动
tdsql_metadb_ip_bak: 10.120.109.205 <-----暂时不改动
tdsql_metadb_port_bak: 15001 <-----暂时不改动
tdsql_metadb_user: hanlon <-----暂时不改动
tdsql_metadb_password: hanlon <-----暂时不改动
tdsql_hdfs_num: 3 <-----暂时不改动,但我之前只写了一台hdfs机器,若需改动,需改为1
tdsql_hdfs_ssh: 36000 <-----暂时不改动
tdsql_hdfs_datadir: /data2/hdfs,/data3/hdfs,/data4/hdfs <-----暂时不改动
tdsql_hdfsdatadir_count: 3 <-----暂时不改动
tdsql_kafka_logdir: /data2/kafka,/data3/kafka,/data4/kafka <-----暂时不改动
tdsql_es_mem: 8 <-----暂时不改动
tdsql_es_log_days: 7 <-----暂时不改动
tdsql_es_base_path: /data/application/es-install/es <-----暂时不改动
tdsql_intercity_zkrootdir: /tdsqlcross <-----暂时不改动
tdsql_intercity_netif: eth1 <-----暂时不改动
tdsql_zk_clientport: 2118 <-----不改动
tdsql_zk_serverport1: 2338 <-----不改动
tdsql_zk_serverport2: 2558 <-----不改动
tdsql_oc_server_pass: K2K6QP+I5zBaU0oA/6gXMGqye+Q= <-----自动更新,禁止手动修改
tdsql_oc_client_pass: LGi1Rv+I7DxdWUUG/6gcPG24dOI= <-----自动更新,禁止手动修改
tdsql_clouddba_metadb_pass: h5Wyg2Xy <-----自动更新,禁止手动修改

part1安装

(2 选 1,使用 tdsql 安装的 zk)执行安装 part1_site.yml

安装大约 9 分钟左右,日志路径/var/log/ansible.log,最终显示 failed 任务数为 0 表示安装成功。

1
2
3
sh playbooks/tdsql_encrypt.sh <---------必须执行,更新密文密码 

ansible-playbook -i tdsql_hosts playbooks/tdsql_part1_site.yml

(2 选 1,使用已经安装的 zk)执行安装 part1_exclude_zk_site.yml

1
2
3
sh playbooks/tdsql_encrypt.sh <---------必须执行,更新密文密码 

ansible-playbook -i tdsql_hosts playbooks/tdsql_part1_exclude_zk_site.yml

初始化chitu

网页访问安装chitu 模块的机器地址 http://192.168.6.5/tdsqlpcloud ,进行chitu初始化。

环境检测(如下图):

集群配置(如下图):(生产环境设置多个OSS地址做高可用)

集群初始化(如下图):

新增idc信息

IDC 命名: IDC 信息要尽量选取的有意义,如“IDC_XIAN_TF_08_001”,对应着实际的“城市+ 机房+房间号+机架号”信息。

IDC 是策略上的配置,要对应到实际的机架信息上。比如有 2 个 DB 机器,为了保证 DB 实例 跨机架,新增 2 个 IDC:“IDC_XIAN_TF_08_001”和“IDC_SH_HL_02_001”。 IDC 权重:IDC 权重皆使用默认值 100。

要实现自动买出来的实例可以实际地跨机架的话,推荐的做法是:

  1. 根据实际的机架信息,精确到编号,创建名字有意义的 IDC
  2. 根据机器实际的分布,划分到对应的 IDC 中
  3. 购买实例时不要指定 ip,这样就保证了逻辑上的跨机架,也是实际上的跨机架

新增db 机器的机型

机型: TS80,根据实际情况设定。(机型的名字要全部大写)

CPU、内存和磁盘大小:

​ 设置机型的时候要依据实际的机器配置,比如服务器有 cpu 逻辑核数:8,内存:32g,数 据盘空间:200G。机型设置的时候 cpu 核数和实际一致,设置为8;内存设置为实际内存的 75%, 为 24g;磁盘总空间设置为实际空间的 90%,为 180 G。

​ 注意:数据盘和日志盘的大小比例应该是 3:1,数据盘+日志盘 = 服务器实际空间*90%

数据磁盘目录:

​ 建议是/data1/tdengine/data

日志磁盘目录:

​ 建议是/data1/tdengine/log

安装包目录:

​ /data/home/tdsql/tdsqlinstall,固定不变。

数据库安装目录:

​ /data/tdsql_run,固定不变。

预留资源百分比: 1,固定不变。

新增网关机器的机型

机型:

​ PROXY,固定不变。(机型的名字要全部大写)

CPU、内存和磁盘大小:

​ 全部填 1,因为 PROXY 机型比较特殊,这些参数对它无意义。

数据磁盘和日志磁盘的路径:

​ 全部/data 即可,无意义参数。

安装包目录:

​ /data/home/tdsql/tdsqlinstall,固定不变。

数据库安装目录:

​ /data/tdsql_run,固定不变。

预留资源百分比:

​ 1,固定不变。

上报DB 设备资源

IP:填写实际的 DB 机器的通信 ip 地址。

机型:选择刚才创建的机型,如 TS80。

IDC:根据实际情况,选择其归属于哪一个 IDC。(不同 DB 机器要划分到不同 IDC 中)

fenceid、frame、zone:都默认即可。

上报网关资源

IP:填写实际的 PROXY 机器的通信 ip 地址。

IDC:同一网关组内的网关可以划分在不同的 IDC 中,或者相同的 IDC 中。比如都划分到 “ IDC_XIAN_TF_08_001 ”, 或 者 划 分 到 “IDC_SH_HL_02_001 ” 和 “ IDC_XIAN_TF_08_001”中。

新增网关组

如下图,因为之前上报了 2 台 proxy 机器,且这 2 台 proxy 机器划分在不同 IDC 中,所以这里 选择“从2 个 IDC 中取 2 台机器”。

创建实例(监控DB)




创建完成后,需要进行将实例进行初始化。

为系统配置数据库

admin 身份登录进入 chitu:

默认用户/密码:admin/123456

再次修改ansible 变量

(1)在chitu 的页面点击刚才的监控库实例(初始状态应该只有这一个实例)

(2)根据得到的连接参数,用mysq 客户端测试一下监控库是否可以连接

1
2
3
4
5
6
7
8
9
10
[root@mac1 tdsql_install]# mysql -uwangmj -h192.168.6.5 -P15001 -pwangmj
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 3661
Server version: 5.7.30-33-V2.0R630D001-v17-20200522-1443-log Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

(3)将监控库的连接参数写入到变量文件group_vars/all 中

1
2
3
4
5
6
7
8
9
vim group_vars/all 修改如下参数

---
tdsql_metadb_ip: 192.168.6.5 <-----填监控库 proxy 的 ip 地址
tdsql_metadb_port: 15001 <-----填监控库 proxy 的端口
tdsql_metadb_ip_bak: 192.168.6.6 <-----填监控库备份 proxy 的 ip 地址
tdsql_metadb_port_bak: 15001 <-----填监控库备份 proxy 的端口
tdsql_metadb_user: wangmj <-----填监控库的访问用户名
tdsql_metadb_password: wangmj <-----填监控库的访问密码

执行安装 part2_site2.yml

安装大约 4 分钟左右,日志路径/var/log/ansible.log,最终显示 failed 任务数为 0 表示安装成功。

1
2
[root@mac1 tdsql_install]# sh playbooks/tdsql_encrypt.sh 	<---------必须执行,更新密文密码
[root@mac1 tdsql_install]# ansible-playbook -i tdsql_hosts playbooks/tdsql_part2_site.yml

安装完成后,过5分钟刷新 赤兔的集群总览,发现已可以看到监控。

安装备用赤兔(如果有另一个未初始化的chitu)

将已初始化的 chitu 机器上拷贝 2 个文件到未初始化的 chitu 机器上,并删除未初始化 chitu 机器 上的 crontab,如下:

192.168.6.5 已初始化 chitu

192.168.6.6 未初始化 chitu

(1)在 192.168.6.5机器上,拷贝文件到 192.168.6.6 机器上

1
2
3
[root@mac2 ~]# scp -p /data/website/tdsqlpcloud/www/config/database.php 192.168.6.6:/data/website/tdsqlpcloud/www/config/

[root@mac2 ~]# scp -p /data/website/tdsqlpcloud/www/config/install.lock 192.168.6.6:/data/website/tdsqlpcloud/www/config/

(2)删除 205 机器上 nginx 用户的 crontab (若无,则无需操作)

1
2
cp -a /var/spool/cron/nginx /data/tools/nginx_cron_bak	若无此文件或文件夹,则无需操作
rm -f /var/spool/cron/nginx

(3)测试,登录 192.168.6.6 的 chitu: http://192.168.6.6/tdsqlpcloud/

安装其它模块(可选)

安装以下模块之前要确保 TDSQL 核心模块安装无误后再进行。

如果需要使用 hdfs 异地冷备存储 binlog 和镜像文件,用于数据回档恢复,安装 hdfs。

如果需要使用 tdsql 默认提供的接入层 lvs,安装 lvs。

如果需要使用多源同步功能,安装 kafka 和 consumer。

如果需要使用网关日志分析及 sql 审计功能,安装 es。

安装hdfs

(1)准备 hdfs 的数据目录的路径

用 mkfs 工具将磁盘格式化为 xfs 文件系统,创建目录文件并设置自动挂载,建议在/etc/fstab 中,defaults后加上noatime参数。

由于我之前挂载了三块盘,故此处直接使用 /data2

(2)检查 tdsql_hosts 文件

填写 tdsql_hosts 文件中 hdfs 节点时,单节点和三节点二选一。我此处为单节点,生产环境建议三节点。

  1. 单节点

    1
    2
    3
    4
    [root@mac1 tdsql_install]# vim tdsql_hosts

    [tdsql_hdfs] <---填入 hdfs 机器地址,hdfs 的数量只能是 1 或 3
    tdsql_hdfs1 ansible_ssh_host=192.168.6.3
  2. 三节点

    1
    2
    3
    4
    5
    # vim tdsql_hosts
    [tdsql_hdfs] <---填入 hdfs 机器地址,hdfs 的数量只能是 1 或 3
    tdsql_hdfs1 ansible_ssh_host=1.1.1.1
    tdsql_hdfs2 ansible_ssh_host=1.1.1.2
    tdsql_hdfs3 ansible_ssh_host=1.1.1.3

(3)修改 hdfs 变量

修改 group_vars/all 中下面的相关变量

1
2
3
4
5
6
7
8
9
[root@mac1 tdsql_install]# vim group_vars/all

---
tdsql_hdfs_num: 1 <----hdfs 部署的是几个节点,填写 1 或者 3
ssh_port: 22 <----实际的 ssh 通信端口
hdfs_datadir: /data2/hdfs/data <----hdfs 的存放数据文件的路径(一个磁盘一个路径,逗号分隔)注意这些数据文件路径的权限要是 tdsql,如:chown -R tdsql:users /data2
tdsql_hdfsdatadir_count: 1 <----hdfs 数据目录个数,如:
hdfs_datadir: /data2/hdfs/data/,/data3/hdfs/data 则填写 2,
hdfs_datadir: /data2/hdfs/data,/data3/hdfs/data,/data4/hdfs/data 则填写 3

(4)2选1:安装hdfs 单点

hdfs 单点和下面的高可用架构,二者选其一,生产环境要求用高可用架构。

执行安装

1
[root@mac1 tdsql_install]# ansible-playbook -i tdsql_hosts playbooks/tdsql_hdfs_single.yml

切换到 tdsql 用户

1
su - tdsql

用 tdsql 用户在 hdsf1 机器上,格式化 namenode

1
hdfs namenode -format

tdsql 用户在 hdfs1 机器上,启动 namenodedatanode

1
2
3
hdfs --daemon start namenode

hdfs --daemon start datanode

附:用 tdsql 用户关闭 hdfs 进程

1
2
3
hdfs --daemon stop datanode 

hdfs --daemon stop namenode

(5)2选1:安装hdfs 高可用架构

3 个 hdfs 节点,必须保证 zk 集群不能是单点。

执行安装

1
hdfs ansible-playbook -i tdsql_hosts playbooks/tdsql_hdfs.yml

切换到 tdsql 用户

1
su - tdsql

用 tdsql 用户初始化 hdfs 集群,初始化顺序如下,初始化的工作只用做一次,不要重复初始化

用 tdsql 用户在 hdfs1 机器,格式化 zk

1
hdfs zkfc -formatZK

用 tdsql 用户在所有机器,启动 journalnode

1
hdfs --daemon start journalnode

用 tdsql 用户在 hdfs1 机器,格式化并启动 namenode

1
2
3
hdfs namenode -format 

hdfs --daemon start namenode
1
2
3
用 tdsql 用户在 hdfs2 机器,格式化 namenode 

hdfs namenode -bootstrapStandby

用 tdsql 用户启动 hdfs 集群,启动顺序如下,已经启动的进程就不用重复再启动了,查看启动的 进程”jps”

在所有 hdfs 机器上启动 journalnode

1
hdfs --daemon start journalnode

在 hdfs1 和 hdfs2 上启动 namenode

1
hdfs --daemon start namenode

在 hdfs1 和 hdfs2 上启动 zkfc

1
hdfs --daemon start zkfc

在所有 hdfs 机器上启动 datanode

1
hdfs --daemon start datanode

附:用 tdsql 用户关闭 hdfs 集群,关闭顺序如下

在所有 hdfs 机器上关闭 datanode

1
hdfs --daemon stop datanode

在 hdfs1 和 hdfs2 上关闭 zkfc

1
hdfs --daemon stop zkfc

在 hdfs1 和 hdfs2 上关闭 namenode

1
hdfs --daemon stop namenode

在所有 hdfs 机器上关闭 journalnode

1
hdfs --daemon stop journalnode

(6)在 hdfs 集群下查看/tdsqlbackup 路径

用 tdsql 用户执行以下命令 #查看/tdsqlbackup 目录是否已经被自动创建,权限是否如下

1
2
3
hadoop fs -ls / 

drwxr-xr-x - tdsql supergroup 0 2019-01-02 17:52 /tdsqlbackup

如果目录不在或者权限不对,用下面命令修改:

1
2
3
hadoop fs -mkdir /tdsqlbackup

hadoop fs -chown tdsql.supergroup /tdsqlbackup

(7)管理 hdfs 集群 用 tdsql 用户执行以下命令

查看所有 namenode 节点状态,及主备情况(只适用于高可用 3 节点架构)

1
hdfs haadmin -getAllServiceState

查看所有 datanode 节点的状态,及上报的容量情况

1
hdfs dfsadmin -report

(8)注意 用 tdsql 用户执行 jps 命令,可以看到 hdfs 的进程名称(只适用于高可用 3 节点架构)

hdfs1 和 hdfs2 机器上应该看到 NameNode、JournalNode、DataNode、DFSZKFailoverController

hdfs3 机器上应该看到 DataNode、JournalNode

(9)配置 hdfs 监控 如果有 HDFS,但是没有配置 HDFS 监控,到””集群管理->集群配置”中设置“HDFS 服务列表””, 如图

如果是 3 节点的 hdfs 架构,如上图所示填写 namenode 节点(一般 2 个)的 50070 端口

生产环境不能用单节点 hdfs,单节点架构的 hdfs 的端口号是 9870

安装lvs

lvs 机器建议单独部署,不建议和其他组件复用(最多只能和 zk 复用)。

(1)检查 tdsql_hosts 文件

1
2
3
4
vim tdsql_hosts
[tdsql_lvs] <---填入 lvs 地址,lvs 的数量固定为 2
tdsql_lvs1 ansible_ssh_host=192.168.6.5
tdsql_lvs2 ansible_ssh_host=192.168.6.6

(2)安装 lvs

1
ansible-playbook -i tdsql_hosts playbooks/tdsql_lvs.yml

(3)赤兔前台操作 lvs

上报 lvs 机器信息(2 台 lvs 机器信息都要上报)

设备 IP:填入 LVS 机器的通信 ip 地址。

网卡名字:通信网卡设备名。

子网掩码:填入实际的子网掩码。

IDC:lvs 机器需要划分到同一个 IDC 中,比如这里的“IDC_SZ_YDGL_0401_000001”。

创建 VIP(不能选取部署的机器 IP 作为 VIP,需要另选之外一个)

VIP:规划一个 vip 的地址,vip 的地址要和 lvs 机器的通信 ip 地址在同一个网段内。

设备 IP 列表:填入 lvs 机器的通信 ip 地址,一行一个。

创建 VIPGroup VIPGroup 名:新建一个 vipgroup,取一个有意义的名字。

给 VIPGroup 添加 VIP LVSGroup 名:vipgroup 名字。

添加 VIP:填入 vip 地址。

安装kafka

(1) 检查 tdsql_hosts 文件

1
2
3
4
5
vim tdsql_hosts
[tdsql_kafka] <----填入 kafka 集群的地址,kafka 的数量固定为 3
tdsql_kafka1 ansible_ssh_host=192.168.6.3 <----kafka 机器的 java 虚拟机占用3个g以上内存
tdsql_kafka2 ansible_ssh_host=192.168.6.5
tdsql_kafka3 ansible_ssh_host=192.168.6.6

(2)修改多源同步变量

修改 group_vars/all 中下面的相关变量

1
2
3
4
vim group_vars/all

---
kafka_logdir: /data6/kafka,/data7/kafka <----kafka 的日志文件路径,需要较大的磁盘空间

(3)执行安装多源同步

1
ansible-playbook -i tdsql_hosts playbooks/tdsql_kafka.yml

(4)验证是否安装成功

1
2
3
cd /data/application/kafka_2.11-0.10.0.1/logs 

vim server.log <----查看 kafka 启动信息,

如下图

安装consumer

(1)查看tdsql_hosts 文件

1
2
[tdsql_consumer] <---填入消费者的地址,数量固定为 1
tdsql_consumer1 ansible_ssh_host=192.168.6.3

(2)执行安装 consumer

1
ansible-playbook -i tdsql_hosts playbooks/tdsql_consumer.yml

(3)启动消费者服务 在 consumer 的机器上,使用下面命令启动消费者服务

1
2
3
4
5
6
7
8
9
cd /data/application/consumer/bin/
./binlogconsumermgn --zklist 192.168.6.3:2118,192.168.6.5:2118,192.168.6.6:2118 --zkrootpath /tdsqlzk --kafkazklist 192.168.6.3:2118,192.168.6.5:2118,192.168.6.6:2118 --kafkazkrootpath /kafka --dev eth0

参数说明:
--zklist ZK 的 ip:port,可以写多个 ZK ip:port,多个之间用英文逗号分隔
--zkrootpath 注意整理 zk 根节点与部署的时候 group_vars/all 下的” zk_rootdir”一致
--kafkazklist kafka 所在 zk,通常与--zklist 一样
--kafkazkrootpath kafka 在 ZK
--dev consumer 的网卡名称

(4)多源同步验证

多源同步提供 tdsql 到 tdsql,tdsql 到 mysql,tdsql 到 oracle 之间的同步方案。

下面只简单说下 tdsql 同步到 tdsql



安装部署跨城DCN

背景描述:当两地要使用到 groupshard 建立 DCN 同步,要做:groupshard 主备切换和 groupshard 水平扩容,则需要部署该模块。

注意:这里不能部署到与当前部署过 OSS 和 scheduler 的机器上

1
2
3
4
5
6
7
cd tdsql_install/ 

vim tdsql_hosts

[tdsql_intercity]

tdsql_intercity1 ansible_ssh_host=192.168.6.3 填写部署的机器(要求如上注意所述)

修改 group_vars/all 文件变量

1
2
3
tdsql_intercity_zkrootdir: /tdsqlcross 	<---跨城注册的 zkrootdir,一般不用修改

tdsql_intercity_netif: eth0 <---填入(ifconfig 看到的)网卡的名称

部署:

1
2
# cd ansible_install/ 
# ansible-playbook -i tdsql_hosts playbooks/tdsql_crosscity.yml

部署成功后,查看进程是否启动成功

赤兔前台注册跨城集群管理

管理区域:可以根据跨城 DCN 的两个集群名填写,具体名称不做限制。

跨城 OSS 服务:填写部署的机器 ip:8080/tdsql,(例如:192.168.6.3:8080/tdsql), :8080/tdsql 是固定不变的。

集群名称:下拉选择即可。(这里事先得接入多集群) ZK 服务列表和 ZK 根目录会自动拉取,不用填写。

是否开启 ACL 校验:是,新版本已经有该功能。


安装es

(1)查看tdsql_hosts 文件(不能与chitu同一台机器)

1
2
[tdsql_es] <---填入 es 的地址,数量固定为 1
tdsql_es1 ansible_ssh_host=192.168.6.3

修改变量文件 vim group_vars/all

1
2
3
es_mem: 2 <-----内存占用,如果这里写 2 则至少占用 2*2=4G 内存
es_log_days: 7 <-----日志保留天数
es_base_path: /data/application/es-install/es <-----es 数据存放路径

(2)执行安装 es

1
ansible-playbook -i tdsql_hosts playbooks/tdsql_es_single.yml

(3)启停命令(在 es 机器上操作):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 # stop
ps -ef |grep elasticsearch | grep -v 'grep'| awk '{print $2}' | xargs kill -9
ps -ef |grep logstash | grep -v 'grep'| awk '{print $2}' | xargs kill -9
ps -ef |grep es-cleaner | grep -v 'grep'| awk '{print $2}' | xargs kill -9
ps -ef |grep 'node/bin/node' | grep -v 'grep'| awk '{print $2}' | xargs kill -9

# start
tdsql 用户启动:
cd /data/application/es-install/es/master/tools
./start-elasticsearch.sh

cd /data/application/es-install/es/data/tools
./start-elasticsearch.sh

root 用户启动:
cd /data/application/es-install/logstash/tools
./start-logstash.sh

cd /data/application/es-install/es-cleaner
./start-es-cleaner.sh

cd /data/application/es-install/kibana-5.6.4-linux-x86_64/bin/
nohup ./kibana &

\# 检测是否正常启动

ps -ef |grep elasticsearch | grep -v 'grep' |wc -l
输出为:4

ps -ef |grep logstash | grep -v 'grep' |wc -l
输出为:2

ps -ef |grep es-cleaner | grep -v 'grep' |wc -l
输出为:1

ps -ef |grep 'node/bin/node' | grep -v 'grep' |wc -l
输出为:1

(4)es 的验证及相关配置
输入 es IP 地址 192.168.6.3,打开 es 前台页面。

启动 es 后,需要把实例详情中的“网关审计数据是否入库”打开,选择“是”。 只有在打开这个开关后的日志才会入 es,为了可以定位问题,需要的话一定要尽早打开。

在集群设置中加入 es 接口:

在 kibana 接口这行中填入 es 的地址,格式为 http://192.168.6.3:8080/interface,其中 192.168.6.3 是 es 的地址。

文章目录
  1. 1. 部署规划
  2. 2. 配置免密登录
  3. 3. 其他前期准备
  4. 4. 在主控机上安装ansible
  5. 5. 准备数据目录路径
  6. 6. 修改 tdsql_hosts 文件
  7. 7. 决定系统账号tdsql 的密码
  8. 8. 修改ansible变量
  9. 9. part1安装
    1. 9.1. (2 选 1,使用 tdsql 安装的 zk)执行安装 part1_site.yml
    2. 9.2. (2 选 1,使用已经安装的 zk)执行安装 part1_exclude_zk_site.yml
  10. 10. 初始化chitu
    1. 10.1. 环境检测(如下图):
    2. 10.2. 集群配置(如下图):(生产环境设置多个OSS地址做高可用)
    3. 10.3. 集群初始化(如下图):
    4. 10.4. 新增idc信息
    5. 10.5. 新增db 机器的机型
    6. 10.6. 新增网关机器的机型
    7. 10.7. 上报DB 设备资源
    8. 10.8. 上报网关资源
    9. 10.9. 新增网关组
    10. 10.10. 创建实例(监控DB)
    11. 10.11. 为系统配置数据库
    12. 10.12. 以admin 身份登录进入 chitu:
  11. 11. 再次修改ansible 变量
  12. 12. 执行安装 part2_site2.yml
  13. 13. 安装备用赤兔(如果有另一个未初始化的chitu)
  14. 14. 安装其它模块(可选)
    1. 14.1. 安装hdfs
    2. 14.2. 安装lvs
    3. 14.3. 安装kafka
    4. 14.4. 安装consumer
    5. 14.5. 安装部署跨城DCN
    6. 14.6. 安装es
// Add comment count
|